// pages/foodList/foodlist.js
const app = getApp();
const key = app.globalData.key;
const env = app.globalData.env;
const service = app.globalData.service;
const maxDistance = app.globalData.maxDistance;
const contextPath = app.globalData.contextPath;

Page({
    data: {
        latitude: 0,
        longitude: 0,
        foodList: [], // 初始美食列表为空    
    },

    onLoad: async function () {
        // 页面加载时获取初始数据  
        await this.loadCurrentLocation();
    },
    async loadCurrentLocation() {
        wx.getLocation({
            type: 'wgs84',
            success: (res) => {
                const latitude = res.latitude
                const longitude = res.longitude
                this.setData({
                    latitude,
                    longitude
                }, async () => {
                    // 数据已经更新，现在可以安全地使用 latitude 和 longitude 了
                    this.fetchFoodList();
                })
            },
            fail(res) {
                console.log(res)
            }

        })
    },

    fetchFoodList: async function () {

        const latitude = this.data.latitude;
        const longitude = this.data.longitude;


        // 构造请求 URL（根据您的 API 接口进行调整）  
        const url = `${contextPath}/food?longitude=${longitude}&latitude=${latitude}&distance=${maxDistance}`; // 替换为您的 API 路径  

        try {
            const res = await wx.cloud.callContainer({
                config: {
                    env: env, // 微信云托管的环境 ID，根据实际情况填写
                },
                path: url, // 业务自定义路径和参数
                method: 'GET', // 请求方法
                header: {
                    'X-WX-SERVICE': service, // 你的云托管服务名称
                    // 可以添加其他需要的 header
                },
                // 可以添加请求的 body，GET 请求通常不需要
            });
            console.log('获取到的数据结果: ', res); // 处理获取到的数据

            // this.saveDataToFile(res.data); // 保存数据到文件

            if (res.data && Array.isArray(res.data)) {
                // 在 storeList 中的每个条目中，将 distance 字段转化为 km 单位并保留两位小数
                const processedData = res.data.map(item => {
                    item.distance = (item.distance / 1000).toFixed(2);
                    return item;
                });

                this.setData({
                    foodList: processedData
                })
            } else {
                // 处理错误或无效数据的情况  
                wx.showToast({
                    title: '无法获取美食列表',
                    icon: 'none',
                    duration: 2000
                });
            }
        } catch (error) {
            console.error('请求失败:', error);
            wx.showToast({
                title: '网络错误',
                icon: 'none',
                duration: 2000
            });
            // 设置一个空数组或其他默认状态  
            this.setData({
                foodList: []
            });
        }
    },

    // 跳转到详情页
    goDetail: function (event) {
        console.log(event)
        const item = event.currentTarget.dataset.item;
        wx.navigateTo({
            url: '/pages/foodDetail/fooddetail?item=' + encodeURIComponent(JSON.stringify(item))
        });
    },
    // 保存数据到文件
    saveDataToFile(data) {
        const fs = wx.getFileSystemManager();
        const filePath = `${wx.env.USER_DATA_PATH}/foodList.json`; // 指定保存的文件路径

        // 将数据转换为 JSON 字符串
        const dataString = JSON.stringify(data);

        // 写文件
        fs.writeFile({
            filePath: filePath,
            data: dataString,
            encoding: 'utf8',
            success: () => {
                console.log('美食列表数据已保存到', filePath);
            },
            fail: err => {
                console.error('保存文件失败:', err);
            },
        });
    },
});